package fichiers;

import Composite.*;
import espace_physique.*;
import java.util.*;
import javax.swing.tree.*;
import support.*;

public class MyDefaultMutableTreeNode extends DefaultMutableTreeNode implements Observer{
    
    private AdapteurGestionFichierArbre adapteur;
    
    public MyDefaultMutableTreeNode(Element e, AdapteurGestionFichierArbre adapteur) {
        
        super(e);
        this.adapteur = adapteur;
        e.addObserver(this);
        if(e.allowsChildren()) this.allowsChildren=true;
        else this.allowsChildren=false;
        
    }
    
    public void setUserObject(Object o) { }
    
   
    public void update(Observable o, Object arg) {

        Element e=(Element)this.getUserObject();
        Element nouveau=(Element)arg;
     if(!e.estUnePhoto()){   
        if(e.getChildCount()<this.getChildCount()){

               this.adapteur.removeNodeFromParent(this.getFils(arg));

        } else if(e.getChildCount()>this.getChildCount()){

            int index =nouveau.getPere().getIndex(nouveau);
            if(index>=this.getChildCount()){
                
                adapteur.ajouterNoeud(nouveau, this,this.getChildCount());
                
            } else{
                
                adapteur.ajouterNoeud(nouveau, this,index);
            }
        }  
     }else{

            adapteur.nodeChanged(this);

        }
   
    }
    
    public MyDefaultMutableTreeNode getFils(Object e){
        
        Iterator it=this.children.iterator();
        while(it.hasNext()){
            
            MyDefaultMutableTreeNode suiv=(MyDefaultMutableTreeNode) it.next();
            if(suiv.getUserObject().equals(e)){
                
                return suiv;
            }

        }
        return null;
    }
}
